package Practica1;
import java.util.Stack;
public class Sesion1 {

	public static void main(String[] args){
		System.out.println(Iterativo(1));
		double resss;
		long ti=0;
		long tf=0;
		ti=System.nanoTime();
		resss=Recursivo(8);
		tf=System.nanoTime();
		long res=tf-ti;
		System.out.println("tiempo="+res);
		
	}
		
	public static double Iterativo(int n){
		double resultado = 0.0;
		for(int i=1;i<=n;i++)
			resultado=resultado+(Math.pow(-1,(i-1))/i);
		return resultado;
	}
	public static double Recursivo(int n){
		double resultado = 0.0;
		if (n>=1){
			resultado=Recursivo(n-1)+(Math.pow(-1,(n-1))/n);
		}
		return resultado;
	}
	public static double sumaRecurIter(int n){
		Stack<Integer> pilaN=new Stack <Integer> ();
		Stack<Double> pilaSuma=new Stack <Double> ();
		double resultado=0.0;
		//inicializacion
		pilaN.push(n);
		pilaSuma.push(0.0);//da igual lo que ponga
		//Llamadas
		while(pilaN.peek()>1){
			pilaN.push(pilaN.peek()-1);
			pilaSuma.push(0.0);
		}
		//caso base
		pilaSuma.pop();
		pilaSuma.push(1.0);
		//regresos
		while(!pilaN.empty()){
			pilaN.pop();
			resultado=pilaSuma.pop();
			if(!pilaSuma.empty()){
				pilaSuma.pop();
				pilaSuma.push(resultado+Math.pow(-1, pilaN.peek()-1)/pilaN.peek());
			}
		}
		return resultado;	
	}
}
